# Python 循环语句示例

print("=" * 50)
print("Python 循环语句")
print("""
1. for 循环基础：遍历各种数据类型
2. range() 函数与 for 循环：生成数字序列
3. enumerate() 函数：同时获取索引和值
4. zip() 函数：同时遍历多个序列
5. while 循环：条件循环
6. 嵌套循环：循环内部再嵌套循环
7. 循环控制语句：break、continue、pass
8. else 子句与循环：循环正常结束时执行
9. 列表推导式：简洁地创建列表
10. 字典推导式：简洁地创建字典
11. 集合推导式：简洁地创建集合
12. 生成器表达式：内存高效的迭代器
13. 实用循环示例：实际应用场景
14. 循环与异常处理：在循环中处理异常
""")
print("=" * 50)

# 1. for 循环基础
print("\n1. for 循环基础")
print("-" * 30)

# 遍历字符串
print("遍历字符串 'Python':")
for char in "Python":
    print(f"  字符: {char}")

# 遍历列表
print("\n遍历列表 [1, 2, 3, 4, 5]:")
for num in [1, 2, 3, 4, 5]:
    print(f"  数字: {num}")

# 遍历元组
print("\n遍历元组 ('a', 'b', 'c'):")
for item in ('a', 'b', 'c'):
    print(f"  元素: {item}")

# 遍历字典
print("\n遍历字典 {'name': 'Alice', 'age': 25}:")
person = {'name': 'Alice', 'age': 25}
for key in person:
    print(f"  键: {key}, 值: {person[key]}")

# 2. range() 函数与 for 循环
print("\n\n2. range() 函数与 for 循环")
print("-" * 30)

# range(stop)
print("range(5):")
for i in range(5):
    print(f"  {i}")

# range(start, stop)
print("\nrange(2, 8):")
for i in range(2, 8):
    print(f"  {i}")

# range(start, stop, step)
print("\nrange(0, 10, 2):")
for i in range(0, 10, 2):
    print(f"  {i}")

# 倒序循环
print("\nrange(10, 0, -1):")
for i in range(10, 0, -1):
    print(f"  {i}")

# 3. enumerate() 函数
print("\n\n3. enumerate() 函数")
print("-" * 30)

fruits = ['apple', 'banana', 'orange', 'grape']
print("使用 enumerate 遍历列表:")
for index, fruit in enumerate(fruits):
    print(f"  索引: {index}, 水果: {fruit}")

print("\n指定起始索引的 enumerate:")
for index, fruit in enumerate(fruits, 1):
    print(f"  编号: {index}, 水果: {fruit}")

# 4. zip() 函数
print("\n\n4. zip() 函数")
print("-" * 30)

names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
cities = ['北京', '上海', '广州']

print("使用 zip 同时遍历多个列表:")
for name, age, city in zip(names, ages, cities):
    print(f"  姓名: {name}, 年龄: {age}, 城市: {city}")

# 5. while 循环
print("\n\n5. while 循环")
print("-" * 30)

# 基本 while 循环
print("基本 while 循环:")
count = 1
while count <= 5:
    print(f"  计数: {count}")
    count += 1

# 用户输入循环示例
print("\n用户输入循环示例 (输入 'quit' 退出):")
# 模拟用户输入循环
user_inputs = ['hello', 'world', 'quit']
input_index = 0

while input_index < len(user_inputs):
    user_input = user_inputs[input_index]
    print(f"  模拟输入: {user_input}")
    if user_input == 'quit':
        print("  退出循环")
        break
    input_index += 1

# 6. 嵌套循环
print("\n\n6. 嵌套循环")
print("-" * 30)

# 打印乘法表
print("九九乘法表:")
for i in range(1, 10):
    for j in range(1, i + 1):
        print(f" {j}×{i}={i*j:2d}", end=" ")
    print()  # 换行

# 二维列表遍历
print("\n二维列表遍历:")
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
    for element in row:
        print(f"  元素: {element}")

# 7. 循环控制语句
print("\n\n7. 循环控制语句")
print("-" * 30)

# break 语句
print("break 语句示例:")
for i in range(10):
    if i == 5:
        print(f"  在 {i} 处跳出循环")
        break
    print(f"  数字: {i}")

# continue 语句
print("\ncontinue 语句示例:")
for i in range(10):
    if i % 2 == 0:
        continue  # 跳过偶数
    print(f"  奇数: {i}")

# pass 语句
print("\npass 语句示例:")
for i in range(5):
    if i == 2:
        pass  # 占位符，什么都不做
    else:
        print(f"  数字: {i}")

# 8. else 子句与循环
print("\n\n8. else 子句与循环")
print("-" * 30)

# for-else
print("for-else 示例:")
for i in range(5):
    print(f"  数字: {i}")
else:
    print("  for 循环正常结束")

print("\nfor-else 与 break:")
for i in range(5):
    if i == 3:
        print(f"  在 {i} 处跳出循环")
        break
    print(f"  数字: {i}")
else:
    print("  这行不会被执行")

# while-else
print("\nwhile-else 示例:")
count = 0
while count < 3:
    print(f"  计数: {count}")
    count += 1
else:
    print("  while 循环正常结束")

# 9. 列表推导式
print("\n\n9. 列表推导式")
print("-" * 30)

# 基本列表推导式
squares = [x**2 for x in range(1, 6)]
print("平方数列表:", squares)

# 带条件的列表推导式
even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print("偶数的平方:", even_squares)

# 嵌套列表推导式
matrix = [[i*j for j in range(1, 4)] for i in range(1, 4)]
print("乘法矩阵:", matrix)

# 10. 字典推导式
print("\n\n10. 字典推导式")
print("-" * 30)

# 基本字典推导式
squares_dict = {x: x**2 for x in range(1, 6)}
print("平方数字典:", squares_dict)

# 带条件的字典推导式
even_dict = {x: x**2 for x in range(1, 11) if x % 2 == 0}
print("偶数字典:", even_dict)

# 11. 集合推导式
print("\n\n11. 集合推导式")
print("-" * 30)

# 基本集合推导式
squares_set = {x**2 for x in range(1, 6)}
print("平方数集合:", squares_set)

# 带条件的集合推导式
even_squares_set = {x**2 for x in range(1, 11) if x % 2 == 0}
print("偶数平方集合:", even_squares_set)

# 12. 生成器表达式
print("\n\n12. 生成器表达式")
print("-" * 30)

# 生成器表达式
squares_gen = (x**2 for x in range(1, 6))
print("生成器对象:", squares_gen)
print("生成器内容:", list(squares_gen))

# 再次转换为空，因为生成器只能使用一次
squares_gen = (x**2 for x in range(1, 6))
print("逐个获取生成器内容:")
for square in squares_gen:
    print(f"  {square}")

# 13. 实用循环示例
print("\n\n13. 实用循环示例")
print("-" * 30)

# 计算列表元素之和
numbers = [1, 2, 3, 4, 5]
total = 0
for num in numbers:
    total += num
print(f"列表 {numbers} 的总和: {total}")

# 查找列表中的最大值
max_value = numbers[0]
for num in numbers[1:]:
    if num > max_value:
        max_value = num
print(f"列表 {numbers} 中的最大值: {max_value}")

# 字符串处理
text = "Hello, World!"
vowels = "aeiouAEIOU"
vowel_count = 0
for char in text:
    if char in vowels:
        vowel_count += 1
print(f"字符串 '{text}' 中的元音字母数量: {vowel_count}")

# 14. 循环与异常处理
print("\n\n14. 循环与异常处理")
print("-" * 30)

data = [1, 2, 'three', 4, 5.0, 'six']
print("处理混合数据类型列表:")
numbers_only = []
for item in data:
    try:
        number = float(item)
        numbers_only.append(number)
        print(f"  成功转换: {item} -> {number}")
    except ValueError:
        print(f"  转换失败: {item} 不是数字")
print(f"转换后的数字列表: {numbers_only}")

print("\n" + "=" * 50)
print("循环语句示例结束")
print("=" * 50)
